#include "Int_Motor_485.h"
#include "usart.h"
// 初始化电机
void Motor_485_Init(void)
{
    HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4);
}

// 设置电机转速
void Motor_485_SetSpeed(TW_51_enum motor, uint16_t speed)
{
    uint16_t pulse;
    // 356为我是用的电机最大转速，此if判断保证速度的合理性
    printf("%d\r\n", speed);
    
    if (speed > 0 && speed < 356) {
        // 速度转换为比较寄存器值的一元一次函数
        pulse = 1000 - 2.8086 * speed;
    }

    if (motor == MOTOR_FORWARD) {
        HAL_GPIO_WritePin(AIN1_GPIO_Port, AIN1_Pin, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(AIN2_GPIO_Port, AIN2_Pin, GPIO_PIN_SET);
    } else if (motor == MOTOR_REVERSE) {
        HAL_GPIO_WritePin(AIN1_GPIO_Port, AIN1_Pin, GPIO_PIN_SET);
        HAL_GPIO_WritePin(AIN2_GPIO_Port, AIN2_Pin, GPIO_PIN_RESET);
    } else if (motor == MOTOR_STOP) {
        HAL_GPIO_WritePin(AIN1_GPIO_Port, AIN1_Pin, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(AIN2_GPIO_Port, AIN2_Pin, GPIO_PIN_RESET);
    } else if (motor == MOTOR_START) {
        HAL_GPIO_WritePin(AIN1_GPIO_Port, AIN1_Pin, GPIO_PIN_RESET);
        HAL_GPIO_WritePin(AIN2_GPIO_Port, AIN2_Pin, GPIO_PIN_SET);
    }
    __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_4, pulse);
}